class Timer {
  countdown(end, update, handle) {
    //去当前的时间
    const now = new Date().getTime();
    //获取当前对象的一个指针
    const self = this;
    if (now - end) {
      //如果当前时间大于结束时间，倒计时结束，执行倒计时结束的回调函数
      handle.call(self);
    } else {
      //当前时间离结束时间,
      let last_time = end - now;
      //常量  一天多少毫秒
      const px_d = 1000 * 60 * 60 * 24;
      //常量  一小时多少毫秒
      const px_h = 1000 * 60 * 60;
      //常量  一分钟多少毫秒
      const px_m = 1000 * 60;
      //常量  一秒多少毫秒
      const px_s = 1000 ;
      //剩余时间包括多少天
      let d=Math.floor(last_time/px_d);
      //剩余时间包括多少小时
      let h=Math.floor((last_time-d*px_d)/px_h);
      //剩余时间包括多少分钟
      let m=Math.floor((last_time-d*px_d-h*px_h)/px_m);
      //剩余时间包括多少秒
      let s=Math.floor((last_time-d*px_d-h*px_h-m*px_m)/px_s);
      //判断
      let r=[];
      if(d>0){
        r.push(`<em>${d}</em>天`);
      }
      //如果没有天的时候，前面不能有天，
      if(r.length || (h>0)){
        r.push(`<em>${h}</em>时`);
      }
      if(r.length || (m>0)){
          r.push(`<em>${m}</em>分`);
      }
      if(r.length || (s>0)){
          r.push(`<em>${s}</em>秒`);
      }
      self.last_time=r.join('');
      update.call(self,r.join(''));
      //重新调用倒计时
      setTimeout(function () {
        self.countdown(end,update,handle);
      }, 1000);
    }
  }
}

export default Timer;
